﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Comissoes.Models;
using Comissoes.JQGridObject;

namespace Comissoes.Controllers
{
    public class VendedoresController : AppController
    {
        xcontEntities db = new xcontEntities();

        public ActionResult Index()
        {
            return View();
        }

        public JsonResult VendedoresLookupList()
        {
            return Json((from c in db.VENDEDORES.Include("PESSOAS").ToList() where c.PESSOAS.NOME_PESSOA.ToUpper().Contains(Request["term"].ToUpper()) select new { value = c.PESSOAS.NOME_PESSOA, label = c.PESSOAS.NOME_PESSOA, id = c.COD_VEND }).Take(10), JsonRequestBehavior.AllowGet);
        }

        // Monta a lista de tipos de produtos
        public JsonResult VendedoresList(String sidx, String sord, Int32 page, Int32 rows, Boolean _search, String COD_VEND, String NOME_VEND, String searchOper)
        {
            var q = from c in db.VENDEDORES
                    select new
                    {
                        c.COD_VEND,
                        NOME_VEND = c.PESSOAS.NOME_PESSOA
                    };

            String searchField = string.IsNullOrEmpty(NOME_VEND) ? "COD_VEND" : "NOME_VEND";
            String searchString = string.IsNullOrEmpty(NOME_VEND) ? COD_VEND : NOME_VEND;

            JQGridBuilder jbuilder = new JQGridBuilder(q, page, sidx, sord, searchField, searchString, searchOper, "COD_VEND", _search, rows);

            return Json(jbuilder.GetObject(), JsonRequestBehavior.AllowGet);
        }

        public ActionResult Details(int id)
        {
            return View(db.VENDEDORES.Include("PESSOAS").FirstOrDefault(t => t.COD_VEND == id));
        }

        public ActionResult Edit(int? id)
        {
            if (id == null)
                return View(new VendedoresModel());
            else
                return View(new VendedoresModel(db.VENDEDORES.First(t => t.COD_VEND.Equals(id))));
        }

        [HttpPost]
        public ActionResult Edit(Int32? id, FormCollection form)
        {
            VendedoresModel vendedor;

            if (id.HasValue)
                vendedor = new VendedoresModel(db.VENDEDORES.First(t => t.COD_VEND.Equals(id)));
            else
                vendedor = new VendedoresModel();

            if (vendedor.UpdateValidate(form).Any())
                return Json(vendedor.UpdateValidate(form), JsonRequestBehavior.AllowGet);

            else
            {
                vendedor.Update(form);
                return Json(vendedor.vendedor.COD_VEND, JsonRequestBehavior.AllowGet);
            }
        }

        public JsonResult Delete(int id)
        {
            List<string> erros = new List<string>();
            try
            {
                db.DeleteObject(db.VENDEDORES.FirstOrDefault(t => t.COD_VEND == id));
                db.SaveChanges();

                return Json(true, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                erros.Add(ex.Message);
                if (ex.InnerException != null)
                    erros.Add(ex.InnerException.Message);
            }

            return Json(erros, JsonRequestBehavior.AllowGet);
        }
    }
}
